package com.yykj.order.center.server.service;


import com.yykj.order.center.client.dto.ConsultationAdviseDto;
import com.yykj.order.center.client.dto.ConsultationCreateDto;
import com.yykj.order.center.client.dto.ConsultationDoctorDto;
import com.yykj.order.center.client.dto.ConsultationDoctorRankingDto;
import com.yykj.order.center.client.dto.ConsultationInfoDto;
import com.yykj.order.center.client.dto.ConsultationListDto;
import com.yykj.order.center.client.dto.base.PaginationListDto;
import com.yykj.order.center.client.form.consultation.ConsultationAddDoctorForm;
import com.yykj.order.center.client.form.consultation.ConsultationAdviseForm;
import com.yykj.order.center.client.form.consultation.ConsultationChargebackForm;
import com.yykj.order.center.client.form.consultation.ConsultationConclusionForm;
import com.yykj.order.center.client.form.consultation.ConsultationCreateForm;
import com.yykj.order.center.client.form.consultation.ConsultationDoctorQuitForm;
import com.yykj.order.center.client.form.consultation.ConsultationGetAdviseForm;
import com.yykj.order.center.client.form.consultation.ConsultationListForm;
import com.yykj.order.center.client.form.consultation.ConsultationRemoveDoctorForm;
import com.yykj.order.center.server.entity.Consultation;

import java.util.List;

public interface ConsultationService {
    ConsultationCreateDto create(ConsultationCreateForm consultationCreateForm);

    PaginationListDto<ConsultationListDto> list(ConsultationListForm consultationListForm);

    void chargeback(ConsultationChargebackForm consultationChargebackForm);

    void addDoctor(ConsultationAddDoctorForm consultationAddDoctorForm);

    List<ConsultationDoctorDto> doctorList(String consultationId);

    void removeDoctor(ConsultationRemoveDoctorForm consultationRemoveDoctorForm);

    void doctorQuit(ConsultationDoctorQuitForm consultationDoctorQuitForm);

    void advise(ConsultationAdviseForm consultationAdviseForm);

    void conclusion(ConsultationConclusionForm consultationConclusionForm);

    List<ConsultationAdviseDto> adviseList(String consultationId);

    ConsultationAdviseDto getAdvise(ConsultationGetAdviseForm consultationGetAdviseForm);

    ConsultationInfoDto info(String consultationId);

    List<ConsultationDoctorRankingDto> doctorRanking(String doctorId);

    ConsultationInfoDto getByGroupImId(String groupImId);

    String createGroup(Consultation consultation);

    int countByDoctor(String doctorId, int startTime, int endTime);
}
